package com.neuronbit.businessflow.flow.source.util;

import com.neuronbit.businessflow.flow.parser.FlowNode;
import com.neuronbit.businessflow.flow.project.Project;
import com.neuronbit.businessflow.flow.source.ContextJavaSource;
import com.neuronbit.businessflow.flow.source.FlowJavaSource;
import com.neuronbit.businessflow.flow.source.FlowParamJavaSource;
import lombok.Getter;

/**
 * The type Source context.
 */
@Getter
public class SourceContext {
    private final String packageName;
    private final FlowJavaSource flowNodeSource;
    private final FlowParamJavaSource flowParamSource;
    private final Project project;
    private final ContextJavaSource contextSource;
    private final FlowNode flowNode;

    /**
     * Instantiates a new Source context.
     *
     * @param packageName     the package name
     * @param flowNodeSource  the flow node source
     * @param contextSource   the context source
     * @param flowParamSource the flow param source
     * @param project         the project
     * @param flowNode        the flow node
     */
    public SourceContext(String packageName,
                         FlowJavaSource flowNodeSource,
                         ContextJavaSource contextSource,
                         FlowParamJavaSource flowParamSource,
                         Project project,
                         FlowNode flowNode) {
        this.packageName = packageName;
        this.flowNodeSource = flowNodeSource;
        this.contextSource = contextSource;
        this.flowParamSource = flowParamSource;
        this.project = project;
        this.flowNode = flowNode;
    }
}
